A network processor, in general, refers to an integrated circuit that is optimized for network routing functions and packet processing. Often, a network processor is implemented as a customized microprocessor. Typically, a network processor utilizes a plurality of distributed micro-engines, or sub-processors, which are multithreaded. A plurality of busses can be included that link distributed on-chip memories. Network processors can achieve a high level of data throughput as one micro-engine may handle network control packets while one or more other micro-engines pass data packets through the processor at network speeds.
One disadvantage of a dedicated network processor relates to datapaths. A datapath refers to the route that data follows within a circuit, system, processor, or the like. With respect to a dedicated network processor, datapaths among the various micro-engines in the device are fixed. Programmable logic devices (PLDs), such as field programmable gate arrays (FPGAs), can overcome the limitations of conventional network processors since customized datapaths can be created. In some cases, however, even customized datapaths may be idle for a significant amount of time, leading to an inefficient use of PLD resources. Such is the case, for example, where the network processing application manipulates only the header. Datapaths dedicated to processing the payload of the packet are likely idle during header manipulation functions.